// +build wireinject

package main

import (
	"github.com/google/wire"
	app2 "go.didapinche.com/foundation/apisix-dashboard/internal/app"
	"go.didapinche.com/foundation/apisix-dashboard/internal/app/controllers"
	"go.didapinche.com/foundation/apisix-dashboard/internal/app/repository"
	"go.didapinche.com/foundation/apisix-dashboard/internal/app/services"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/app"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/config"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/etcd"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/http"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/httpclient"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/log"
	"go.didapinche.com/foundation/apisix-dashboard/internal/pkg/zeus"
	"go.didapinche.com/uic"
)

var providerSet = wire.NewSet(
	log.ProviderSet,
	config.ProviderSet,
	controllers.ProviderSet,
	services.ProviderSet,
	repository.ProviderSet,
	http.ProviderSet,
	httpclient.ProviderSet,
	app2.ProviderSet,
	etcd.ProviderSet,
	uic.ProviderSet,
	zeus.ProviderSet,
)

func CreateApp(cf string) (*app.Application, error) {
	panic(wire.Build(providerSet))
}
